package Sort_Code;

public class QuickSort {
    //快速排序

    public static void main(String[] args) {
        int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
        quickSort(arr,0,arr.length-1);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
    private static void quickSort(int[] arr,int i,int j) {
        int s = i;
        int e = j;
        if(s>e){
            return;
        }
        int basenum=arr[i];
        while(s!=e) {
            //找出右边比基准值小的数
            while (true) {
                if (arr[e] < basenum || e <= s) {
                    break;
                }
                e--;
            }
            //找出左边比基准值大的数
            while (true) {
                if (arr[s] > basenum || e <= s) {
                    break;
                }
                s++;
            }
            //交换
            int tmp = arr[s];
            arr[s] = arr[e];
            arr[e] = tmp;

        }
            //把基准值放中间
            int t = arr[i];
            arr[i]=arr[s];
            arr[s]=t;

            //确定基准值左边的范围，重复刚才的事情
            quickSort(arr,i,s-1);
            //确定基准值右边的范围，重复刚才的事情
            quickSort(arr,s+1,j);
        }

    

}
